using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Parametro.Communication;
using Sinacor.UI.Bovespa.Parametro;

namespace Sinacor.UI.Bovespa.Parametro.Communication.Translator.ModelToDataContract
{
	public class ParametroBolsa 
    {

		public ParametroBolsa(){}

		public Bovespa.Parametro.ParametroBolsa.FiltroTipoNotaRequest ToFiltroTipoNotaRequest(Model.Parameter.FiltroTipoNota from)
        {
            Bovespa.Parametro.ParametroBolsa.FiltroTipoNotaRequest to = new Sinacor.UI.Bovespa.Parametro.Communication.Bovespa.Parametro.ParametroBolsa.FiltroTipoNotaRequest();
            to.Cpmf = from.Cpmf;
            return to;
		}

		public Bovespa.Parametro.ParametroBolsa.ParametroBolsaRequest ToParametroBolsaRequest(Model.ParametroBolsa model)
        {
            Bovespa.Parametro.ParametroBolsa.ParametroBolsaRequest to = new Sinacor.UI.Bovespa.Parametro.Communication.Bovespa.Parametro.ParametroBolsa.ParametroBolsaRequest();

            to.AgrupaNota = model.AgrupaNota;
            to.BaseLiquido = model.BaseLiquido;
            to.CaminhoNota = model.CaminhoNota;
            to.Comissao = model.Comissao;
            to.Correspondente = model.Correspondente;
            to.EnviaAgente = model.EnviaAgente;
            to.EnviaCarteira = model.EnviaCarteira;
            to.IntegraContabilidade = model.IntegraContabilidade;
            to.IntegraContasCorrentes = model.IntegraContasCorrentes;
            to.IntegraCustodia = model.IntegraCustodia;
            to.IntegraTesouraria = model.IntegraTesouraria;
            to.LiquidoNota = model.LiquidoNota;
            to.Mensagem = model.Mensagem;
            to.NumeraNota = model.NumeraNota;
            to.SemOperacao = model.SemOperacao;
            to.UltimaNotaEmitida = (int) model.UltimaNotaEmitida;
            to.ZeraNota = (Bovespa.Parametro.ParametroBolsa.TipoPeriodo)model.ZeraNota;

            return to;
		}

		public List<Bovespa.Parametro.ParametroBolsa.FiltroTipoNotaRequest> ToFiltroTipoNotaRequest(ModelCollection<Model.Parameter.FiltroTipoNota> modelList)
        {
            List<Bovespa.Parametro.ParametroBolsa.FiltroTipoNotaRequest> to = new List<Bovespa.Parametro.ParametroBolsa.FiltroTipoNotaRequest>();

            foreach (Model.Parameter.FiltroTipoNota item in modelList)
            {
                to.Add(ToFiltroTipoNotaRequest(item));
            }
            return to;
		}

        public List<Bovespa.Parametro.ParametroBolsa.ParametroBolsaRequest> ToParametroBolsaRequest(ModelCollection<Model.ParametroBolsa> modelList)
        {
            List<Bovespa.Parametro.ParametroBolsa.ParametroBolsaRequest> to = new List<Bovespa.Parametro.ParametroBolsa.ParametroBolsaRequest>();

            foreach (Model.ParametroBolsa item in modelList)
            {
                to.Add(ToParametroBolsaRequest(item));
            }
            return to;
        }

        public Bovespa.Parametro.ParametroBolsa.TipoNotaRequest ToTipoNotaRequest(Model.TipoNota from)
        {
            Bovespa.Parametro.ParametroBolsa.TipoNotaRequest to = new Sinacor.UI.Bovespa.Parametro.Communication.Bovespa.Parametro.ParametroBolsa.TipoNotaRequest();

            to.AgenteDiaCredito = from.AgenteDiaCredito;
            to.AgenteDiaDebito = from.AgenteDiaDebito;
            to.AgenteEstornoCredito = from.AgenteEstornoCredito;
            to.AgenteEstornoDebito = from.AgenteEstornoDebito;

            to.AjusteNegocioDiaCredito = from.AjusteNegocioDiaCredito;
            to.AjusteNegocioDiaDebito = from.AjusteNegocioDiaDebito;
            to.AjusteNegocioEstornoCredito = from.AjusteNegocioEstornoCredito;
            to.AjusteNegocioEstornoDebito = from.AjusteNegocioEstornoDebito;

            to.AjustePosicaoDiaCredito = from.AjustePosicaoDiaCredito;
            to.AjustePosicaoDiaDebito = from.AjustePosicaoDiaDebito;
            to.AjustePosicaoEstornoCredito = from.AjustePosicaoEstornoCredito;
            to.AjustePosicaoEstornoDebito = from.AjustePosicaoEstornoDebito;

            to.NumeroDiasLiquidacao = from.NumeroDiasLiquidacao;

            to.Cpmf = from.Cpmf;
            to.DayTradeDiaCredito = from.DayTradeDiaCredito;
            to.DayTradeDiaDebito = from.DayTradeDiaDebito;
            to.DayTradeEstornoCredito = from.DayTradeEstornoCredito;
            to.DayTradeEstornoDebito = from.DayTradeEstornoDebito;

            to.DescricaoTipoNota = from.DescricaoTipoNota;
            to.IrOperacoesDiaDebito = from.IrOperacoesDiaDebito;
            to.IrOperacoesEstornoCredito = from.IrOperacoesEstornoCredito;
            to.NotaCorretagemDiaCredito = from.NotaCorretagemDiaCredito;

            to.NotaCorretagemDiaDebito = from.NotaCorretagemDiaDebito;
            to.NotaCorretagemEstornoCredito = from.NotaCorretagemEstornoCredito;
            to.NotaCorretagemEstornoDebito = from.NotaCorretagemEstornoDebito;
            to.TipoNota = from.CodigoTipoNota;

			return to;
		}

        public List<Bovespa.Parametro.ParametroBolsa.TipoNotaRequest> ToTipoNotaRequest(ModelCollection<Model.TipoNota> modelList)
        {
            List<Bovespa.Parametro.ParametroBolsa.TipoNotaRequest> to = new List<Sinacor.UI.Bovespa.Parametro.Communication.Bovespa.Parametro.ParametroBolsa.TipoNotaRequest>();

            foreach (Model.TipoNota item in modelList)
            {
                to.Add(ToTipoNotaRequest(item));
            }

            return to;
        }
	}
}